package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis" // 引入redis包
)

// 定义一个全局的pool
var pool *redis.Pool

// 当启动程序时，就初始化连接池
func init() {
	pool = &redis.Pool{
		MaxIdle:     8,   // 最大空闲链接数
		MaxActive:   0,   // 表示和数据库的最大链接数 0-没有限制
		IdleTimeout: 100, // 最大空闲时间
		Dial: func() (redis.Conn, error) {
			return redis.Dial("tcp", "localhost:6379") // 初始化连接池
		},
	}

}

func main() {
	conn := pool.Get() // 从连接池中取出一个连接
	defer pool.Close() // 关闭连接池

	_, err := conn.Do("Set", "name", "tomcat")
	if err != nil {
		fmt.Println("conn Do err=", err)
		return
	}

	// 取出
	r, err := redis.String(conn.Do("Get", "name"))
	if err != nil {
		fmt.Println("conn get err=", err)
		return
	}
	fmt.Println("r=", r)
	// 如果要从pool取出链接，一定要保证连接池是没有关闭的

}
